package com.ruoyi.weixin.service;

import com.ruoyi.common.exception.api.LoginException;
import com.ruoyi.weixin.domain.Client;
import java.util.List;

/**
 * 客户Service接口
 * 
 * @author cloudoer
 * @date 2019-09-03
 */
public interface IClientService 
{
    /**
     * 查询客户
     * 
     * @param clientId 客户ID
     * @return 客户
     */
    public Client selectClientById(String clientId);

    /**
     * 查询客户列表
     * 
     * @param client 客户
     * @return 客户集合
     */
    public List<Client> selectClientList(Client client);

    /**
     * 新增客户
     * 
     * @param client 客户
     * @return 结果
     */
    public int insertClient(Client client);

    /**
     * 修改客户
     * 
     * @param client 客户
     * @return 结果
     */
    public int updateClient(Client client);

    /**
     * 修改生日
     * @param client
     * @return
     */
    public boolean clientBirthday(Client client);

    /**
     * 批量删除客户
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteClientByIds(String ids);

    /**
     * 删除客户信息
     * 
     * @param clientId 客户ID
     * @return 结果
     */
    public int deleteClientById(String clientId);

    /**
     * 查询客户，包含地址信息
     * @param client
     * @return
     */
    public Client selectClientInfoById(Client client);

    /**
     * 发送邮箱验证码
     * @param email
     * @return
     */
    public boolean emailVerifi(String email);

    /**
     * 绑定邮箱
     * @param clientId
     * @param email
     * @param verifi
     * @return
     */
    public boolean emailBinding(String clientId, String email, String verifi) throws Exception;

    /**
     * 设置登录密码
     * @param clientId
     * @param password
     * @return
     */
    public boolean loginPad(String clientId, String password, String email, String verifi);

    /**
     * 邮箱登录
     * @param email
     * @param verifi
     * @return
     */
    public Client emailLogin(String email, String verifi);

    /**
     * 密码登录
     * @param name
     * @param password
     * @return
     */
    Client padLogin(String name, String password) throws LoginException;
}
